10 ; ############################## 20 ; # # 30 ; # C 64 & GIGA-ASS # 40 ; # # 50 ; # GRAFIK-ROUTINEN, VERS. 1.1 # 60 ; # # 70 ; # THOMAS DACHSEL, 06.01.1988 # 80 ; # # 90 ; ############################## 100 +$C000 101 ;******************************** 102 ;* * 103 ;* EINSPRUNGTABELLE: * 104 ;* ---------------- * 105 ;* DIESE TABELLE ENTHAELT EIN- * 106 ;* SPRUNGPUNKTE FUER ALLE ZUR * 107 ;* VERFUEGUNG GESTELLTEN * 108 ;* GRAFIKROUTINEN. * 109 ;* * 110 ;* ROUTINEN, DIE MEHR PARAMETER * 111 ;* BENOETIGEN ALS CPU-REGISTER * 112 ;* VORHANDEN SIND, HABEN VOR * 113 ;* IHREM EINSPRUNGPUNKT EINEN * 114 ;* SOG. AKTIVIERUNGSBLOCK. * 115 ;* * 116 ;* DIE LABEL R00, R03, R06, ... * 117 ;* DIENEN ALS HINWEIS AUF DIE * 118 ;* RELATIVE POSITION DER * 119 ;* EINSPRUNGPUNKTE BZGL. * 120 ;* DER BASIS-ADRESSE. * 121 ;* * 122 ;******************************** 200 R00 (null)PAGE 210 R03 (null)DESIGN 220 R06 (null)OFF 230 R09 (null)INV 240 R0C (null)CLEAR 250 R0F (null)COLOR 260 R12 (null)SETCOL 270 R15 (null)CLEARDOT 280 R18 (null)SET 290 R1B (null)TEST 300 R1E (null)ACCESS 310 X0L THEN1 320 X0H THEN1 330 Y0 THEN1 340 X1L THEN1 350 X1H THEN1 360 Y1 THEN1 370 R27 (null)LINE 380 R2A (null)CLINE 390 FX0L THEN1 400 FX0H THEN1 410 FY0 THEN1 420 FX1L THEN1 430 FX1H THEN1 440 FY1 THEN1 450 R33 (null)FRAME 460 R36 (null)CFRAME 470 R39 (null)FILL 480 TX THEN1 490 TY THEN1 500 EXPX THEN1 510 EXPY THEN1 520 CASE THEN1 530 R41 (null)TEXT 540 RAD THEN1 550 R45 (null)CIRCLE 560 R48 (null)CCIRCLE 570 R4B (null)LINES 580 R4E (null)CLINES 590 R51 600 ;-------------------------------- 610 ; AB HIER WEITERE EINTRAGE 620 ;-------------------------------- 1000 GETRAM 1010 MID$#$7F;INTERRUPTS 1020 (null)$DC0D;AUS 1030 MID$#$35;$A000 & 1040 (null)1;$E000 RAM 1050 NEW 1060 GETROM 1070 MID$#$37;$A000 & 1080 (null)1;$E000 ROM 1090 NEW 1100 ;-------------------------------- 1110 ; GLOBALE VARIABLEN 1120 ;-------------------------------- 1130 TAB(LOW=$14 1140 TAB(HIGH=$15 1150 TAB(CRP=$F9 1160 TAB(HRP=$FB 1170 TAB(HRB=$FD 1180 TAB(HRE=$FE 1190 TAB(COL=$FF 1200 ;-------------------------------- 1210 ; GRAFIK-SEITEN PARAMETER 1220 ;-------------------------------- 1230 PG1 FN$18,$78,$38,$38 1240 PG2 FN$04,$5C,$8C,$CC 1250 ;-------------------------------- 1260 ; ADRESS-TABELLEN 1270 ;-------------------------------- 1280 TAB1 FN0,$40,$80,$C0 1290 FN0,$40,$80,$C0 1300 FN0,$40,$80,$C0 1310 FN0,$40,$80,$C0 1320 FN0,$40,$80,$C0 1330 FN0,$40,$80,$C0,0 1340 TAB2 FN0,1,2,3,5,6,7,8,$A,$B,$C,$D,$F 1350 FN$10,$11,$12,$14,$15,$16,$17,$19,$1A,$1B,$1C,$1E 1360 TAB3 FN1,2,4,8,16,32,64,128 1370 ;-------------------------------- 1380 ; 512 BYTE CIRCLE LOOK-UP TABLES 1390 ;-------------------------------- 1400 LT1 FN$00,$01,$04,$09,$10,$19,$24,$31 1410 FN$40,$51,$64,$79,$90,$A9,$C4,$E1 1420 FN$00,$21,$44,$69,$90,$B9,$E4,$11 1430 FN$40,$71,$A4,$D9,$10,$49,$84,$C1 1440 FN$00,$41,$84,$C9,$10,$59,$A4,$F1 1450 FN$40,$91,$E4,$39,$90,$E9,$44,$A1 1460 FN$00,$61,$C4,$29,$90,$F9,$64,$D1 1470 FN$40,$B1,$24,$99,$10,$89,$04,$81 1480 FN$00,$81,$04,$89,$10,$99,$24,$B1 1490 FN$40,$D1,$64,$F9,$90,$29,$C4,$61 1500 FN$00,$A1,$44,$E9,$90,$39,$E4,$91 1510 FN$40,$F1,$A4,$59,$10,$C9,$84,$41 1520 FN$00,$C1,$84,$49,$10,$D9,$A4,$71 1530 FN$40,$11,$E4,$B9,$90,$69,$44,$21 1540 FN$00,$E1,$C4,$A9,$90,$79,$64,$51 1550 FN$40,$31,$24,$19,$10,$09,$04,$01 1560 FN$00,$01,$04,$09,$10,$19,$24,$31 1570 FN$40,$51,$64,$79,$90,$A9,$C4,$E1 1580 FN$00,$21,$44,$69,$90,$B9,$E4,$11 1590 FN$40,$71,$A4,$D9,$10,$49,$84,$C1 1600 FN$00,$41,$84,$C9,$10,$59,$A4,$F1 1610 FN$40,$91,$E4,$39,$90,$E9,$44,$A1 1620 FN$00,$61,$C4,$29,$90,$F9,$64,$D1 1630 FN$40,$B1,$24,$99,$10,$89,$04,$81 1640 FN$00,$81,$04,$89,$10,$99,$24,$B1 1650 FN$40,$D1,$64,$F9,$90,$29,$C4,$61 1660 FN$00,$A1,$44,$E9,$90,$39,$E4,$91 1670 FN$40,$F1,$A4,$59,$10,$C9,$84,$41 1680 FN$00,$C1,$84,$49,$10,$D9,$A4,$71 1690 FN$40,$11,$E4,$B9,$90,$69,$44,$21 1700 FN$00,$E1,$C4,$A9,$90,$79,$64,$51 1710 FN$40,$31,$24,$19,$10,$09,$04,$01 1720 LT2 THEN16 1730 FN1,1,1,1,1,1,1 1740 FN2,2,2,2,2,3,3,3,3 1750 FN4,4,4,4,5,5,5,5 1760 FN6,6,6,7,7,7,8,8,9,9,9 1770 FN$A,$A,$A,$B,$B,$C,$C 1780 FN$D,$D,$E,$E,$F,$F,$10 1790 FN$10,$11,$11,$12,$12,$13 1800 FN$13,$14,$14,$15,$15,$16 1810 FN$17,$17,$18,$19,$19,$1A 1820 FN$1A,$1B,$1C,$1C,$1D 1830 FN$1E,$1E,$1F,$20,$21 1840 FN$21,$22,$23,$24,$24 1850 FN$25,$26,$27,$27,$28 1860 FN$29,$2A,$2B,$2B,$2C 1870 FN$2D,$2E,$2F,$30,$31 1880 FN$31,$32,$33,$34,$35 1890 FN$36,$37,$38,$39,$3A 1900 FN$3B,$3C,$3D,$3E,$3F 1910 FN$40,$41,$42,$43,$44 1920 FN$45,$46,$47,$48,$49 1930 FN$4A,$4B,$4C,$4D,$4E 1940 FN$4F,$51,$52,$53,$54 1950 FN$55,$56,$57,$59,$5A 1960 FN$5B,$5C,$5D,$5F,$60 1970 FN$61,$62,$64,$65,$66 1980 FN$67,$69,$6A,$6B,$6C 1990 FN$6E,$6F,$70,$72,$73 2000 FN$74,$76,$77,$79,$7A 2010 FN$7B,$7D,$7E,$7F,$81 2020 FN$82,$84,$85,$87,$88 2030 FN$8A,$8B,$8D,$8E,$90 2040 FN$91,$93,$94,$96,$97 2050 FN$99,$9A,$9C,$9D,$9F 2060 FN$A0,$A2,$A4,$A5,$A7 2070 FN$A9,$AA,$AC,$AD,$AF 2080 FN$B1,$B2,$B4,$B6,$B7 2090 FN$B9,$BB,$BD,$BE,$C0 2100 FN$C2,$C4,$C5,$C7,$C9 2110 FN$CB,$CC,$CE,$D0,$D2 2120 FN$D4,$D5,$D7,$D9,$DB 2130 FN$DD,$DF,$E1,$E2,$E4 2140 FN$E6,$E8,$EA,$EC,$EE 2150 FN$F0,$F2,$F4,$F6,$F8 2160 FN$FA,$FC,$FE 3000 ;-------------------------------- 3010 ; 3020 ; PAGE 3030 ; ==== 3040 ; 3050 ; X=0: GRAFIKSEITE $2000 3060 ; FARBSPEICHER $0400 3070 ; 3080 ; X=1: GRAFIKSEITE $6000 3090 ; FARBSPECIHER $5C00 3100 ; 3110 ; X=2: GRAFIKSEITE $A000 3120 ; FARBSPEICHER $8C00 3130 ; 3140 ; X=3: GRAFIKSEITE $E000 3150 ; FARBSPEICHER $CC00 3160 ; 3170 ; X>3: WIRD IGNORIERT 3180 ; 3190 ; DER ENTSPRECHENDE 16 K - BLOCK 3200 ; WIRD ANGEWAEHLT DURCH SETZEN VOM 3210 ; CIA #1 PORT REGISTER A ($DD00). 3220 ; AUSSERDEM WERDEN DIE VIDEO-CHIP 3230 ; REGISTER UND FOLGENDE ZEIGER 3240 ; GESETZT: 3250 ; 3260 ; BIT-MAP: BEGIN PAGE -> HRB 3270 ; END PAGE -> HRE 3280 ; COLOR: BEGIN PAGE -> COL 3290 ; 3300 ;-------------------------------- 3310 PAGE TAN#4 3320 (null)ACCEPT 3330 (null) 3340 ACCEPT MID$#$3B 3350 (null)$D011 3360 MID$#$C8 3370 (null)$D016 3380 MID$PG1,X 3390 (null)$D018 3400 (null) 3410 LEFT$#3 3420 (null)$DD00 3430 POINTERS (null) 3440 (null) 3450 (null) 3460 (null) 3470 (null) 3480 VAL#$20 3490 (null)HRB 3500 VAL#$20 3510 (null)HRE 3520 MID$PG2,X 3530 (null)COL 3540 (null) 3550 ;-------------------------------- 3560 ; DESIGN 3570 ; ====== 3580 ; WAEHLT NUR DIE AKTUELLE 3590 ; GRAFIKSEITE AUS (ERMOEGLICHT 3600 ; "VERDECKTES" ZEICHNEN). 3610 ;-------------------------------- 3620 DESIGN TAN#4 3630 (null)POINTERS 3640 (null) 3650 ;-------------------------------- 3660 ; OFF: GRAFIK-SEITE AUS 3670 ;-------------------------------- 3680 OFF MID$#$1B 3690 (null)$D011 3700 MID$#$15 3710 (null)$D018 3720 MID$#3 3730 (null)$DD00 3740 (null) 3750 ;-------------------------------- 3760 ; INV: GRAFIK-SEITE INVERTIEREN 3770 ;-------------------------------- 3780 INV RAM 3790 LEN#0 3800 (null)HRP 3810 PEEKHRB 3820 (null)HRP+1 3830 ILP MID$(HRP),Y 3840 LEFT$#$FF 3850 (null)(HRP),Y 3860 (null) 3870 (null)ILP 3880 RIGHT$HRP+1 3890 (null) 3900 TANHRE 3910 (null)ILP 3920 ROM 3930 (null) 3940 ;-------------------------------- 3950 ; CLEAR: GRAFIKSEITE LOESCHEN 3960 ;-------------------------------- 3970 CLEAR MID$#0 3980 (null)HRP 3990 PEEKHRB 4000 (null)HRP+1 4010 (null) 4020 CLP (null)(HRP),Y 4030 (null) 4040 (null)CLP 4050 RIGHT$HRP+1 4060 (null) 4070 TANHRE 4080 (null)CLP 4090 (null) 4100 ;-------------------------------- 4110 ; COLOR: FUELLT GESAMTEN FARB- 4120 ; SPEICHER MIT INHALT DES AKKUS 4130 ; 4140 ; HIGH 4 BITS : COLOR OF 1-BITS 4150 ; LOW 4 BITS : COLOR OF 0-BITS 4160 ;-------------------------------- 4170 COLOR LEN#0 4180 (null)HRP 4190 PEEKCOL 4200 (null)HRP+1 4210 PEEK#3 4220 COLSET (null)(HRP),Y 4230 (null) 4240 (null)COLSET 4250 RIGHT$HRP+1 4260 (null) 4270 (null)COLSET 4280 (null) 4290 ;-------------------------------- 4300 ; SETCOL: SETZT FARBE FUER 8 * 8 4310 ; BIT-BLOCK 4320 ; 4330 ; A = ZEILE (0-24) 4340 ; X = SPALTE (0-39) 4350 ; Y = FARBE (0-15) 4360 ;-------------------------------- 4370 SETCOL TAN#40;X < 40 ! 4380 (null)NOCOL 4390 STR$#25;A < 25 ! 4400 (null)NOCOL+1 4410 NOCOL (null) 4420 (null);A := A * 8 4430 (null) 4440 (null) 4450 (null) 4460 (null)HRP 4470 MID$#0 4480 (null)HRP+1 4490 (null)HRP 4500 (null)HRP+1 4510 (null)HRP;HRP = 4520 (null)HRP+1; A * 32 4530 (null) 4540 (null);HRP := 4550 VALHRP;HRP + A*8 4560 (null)HRP 4570 MID$#0;-> 4580 VALHRP+1;HRP = A*40 4590 (null)HRP+1 4600 (null);C = 0 ! 4610 VALHRP 4620 (null)HRP;HRP:=HRP+X 4630 MID$HRP+1 4640 VALCOL;ADD COLOR 4650 (null)HRP+1;RAM BASE 4660 PEEK#0;ADDRESS 4670 MID$(HRP,X) 4680 ASC#$F;ISOLATE 4690 (null)(HRP,X);BACKGROUND 4700 (null);COLOR 4710 (null) 4720 (null);HIGH 4 BIT 4730 (null);PEN COLOR 4740 (null) 4750 (null)(HRP,X);SET NEW 4760 (null)(HRP,X);COLOR 4770 (null) 5000 ;-------------------------------- 5010 ; 5020 ; ACCESS SINGLE DOT IN BIT-MAP 5030 ; ============================ 5040 ; 5050 ; KOORDINATEN WERDEN GESETZT 5060 ; NACH AKKU, X, Y REGISTERN: 5070 ; 5080 ; X-ACHSE: (A/X) Y-ACHSE: Y 5090 ; 5100 ; DIE ZULAESSIGEN WERTE SIND: 5110 ; 5120 ; 0 <= (X-ACHSE) <= 319 5130 ; 0 <= (Y-ACHSE) <= 199 5140 ; 5150 ; ANDERE WERTE WERDEN IGNORIERT - 5160 ; DIE ROUTINE WIRD OHNE NEBEN- 5170 ; WIRKUNG VERLASSEN 5180 ; 5190 ; DIE AUSZUFUEHRENDE OPERATION IST 5200 ; IN $0002 KODIERT: 5210 ; 5220 ; ($0002) = 0 => CLEAR DOT 5230 ; MSB($0002) NOT SET => SET DOT 5240 ; MSB($0002) SET => TEST DOT 5250 ; 5260 ; "ACCESS" WIRD AUFGERUFEN, FALLS 5270 ; $0002 SCHON GESETZT WURDE. 5280 ; 5290 ; CLEARDOT, SET UND TEST SETZEN 5300 ; $0002 VOR AUFRUF VON ACCESS. 5310 ; 5320 ; "TEST DOT" C=0 : DOT NOT SET 5330 ; LIEFERT: C=1 : DOT SET 5340 ; 5350 ;-------------------------------- 5360 CLEARDOT (null) 5370 MID$#0 5380 (null)CONT 5390 SET (null) 5400 MID$#1 5410 (null)CONT 5420 TEST (null) 5430 MID$#$FF 5440 CONT (null)2 5450 (null) 5460 ; 5470 ; *** COORDINATE CHECK *** 5480 ; 5490 ACCESS ATN#$C8 5500 (null)DISCARD 5510 TAN#1 5520 (null)ACCEPTDOT 5530 (null)DISCARD 5540 STR$#$40 5550 (null)ACCEPTDOT 5560 DISCARD (null) 5570 ; 5580 ;*** COMPUTE BIT-MAP POINTER *** 5590 ; 5600 ACCEPTDOT (null) 5610 ASC#$F8 5620 (null)HRP 5630 (null) 5640 (null) 5650 VALHRB 5660 (null)HRP+1 5670 (null) 5680 (null) 5690 (null) 5700 (null) 5710 (null);0<= X <=25 5720 MID$TAB1,X 5730 (null) 5740 VALHRP 5750 (null)HRP 5760 MID$TAB2,X 5770 VALHRP+1 5780 (null)HRP+1 5790 (null) 5800 ASC#7 5810 VALHRP 5820 (null)HRP 5830 RAM 5840 (null) 5850 ASC#7 5860 LEFT$#7;A := 7-A 5870 (null) 5880 MID$TAB3,X;0 <=X<= 7 5890 ;******************************** 5900 ;* * 5910 ;* ACCU NOW CONTAINS BIT-MASK . * 5920 ;* HRP POINTS TO BIT-MAP MEMORY * 5930 ;* TO THE BYTE CONTAINING THE * 5940 ;* ACTUAL DOT. * 5950 ;* * 5960 ;* OPERATION SUBJECT TO $0002 * 5970 ;* CONTENTS IS NOW EXECUTED . * 5980 ;* * 5990 ;******************************** 6000 LEN#0 6010 PEEK2 6020 (null)TESTDOT 6030 (null)SETDOT 6040 ASC(HRP),Y 6050 LEFT$(HRP),Y 6060 (null)(HRP),Y 6070 ROM 6080 (null) 6090 SETDOT (null)(HRP),Y 6100 (null)(HRP),Y 6110 ROM 6120 (null) 6130 TESTDOT ASC(HRP),Y 6140 (null)NOTSET 6150 ROM 6160 (null) 6170 (null) 6180 NOTSET ROM 6190 (null) 6200 (null) 6210 ;-------------------------------- 6220 ; 6230 ; DRAW/CLEAR A LINE 6240 ; ================= 6250 ; 6260 ; DIESE ROUTINE ZEICHNET BZW. 6270 ; LOESCHT EINE LINIE VON DEN 6280 ; KOORDINATEN (X0,Y0) ZU (X1,Y1). 6290 ; LINE ZEICHNET, CLINE LOESCHT 6300 ; DIE LINIE. 6310 ; 6320 ; Y0 UND Y1 WERDEN IN EINEM BYTE 6330 ; GESPEICHERT. 6340 ; 6350 ; X0 UND X1 WERDEN JEWEILS IN 6360 ; ZWEI BYTES GESPEICHERT MIT 6370 ; 6380 ; X0L FUER LOW BYTE 6390 ; VON X0 6400 ; X0H FUER HIGH BYTE 6410 ; 6420 ; X1L FUER LOW BYTE 6430 ; VON X1 6440 ; X1H FUER HIGH BYTE 6450 ; 6460 ; A, X, Y WERDEN IGNORIERT. 6470 ; 6480 ; 6490 ; DIE KOORDINATEN WERDEN NICHT 6500 ; AUF BEREICHSUEBERSCHREITUNG 6510 ; GEPRUEFT. DESHALB KOENNEN 6520 ; LINIEN AUCH UEBER DEN BILD- 6530 ; SCHIRMRAND HINAUS REICHEN. 6540 ; 6550 ; DAS HAT JEDOCH KEINE 6560 ; SCHAEDLICHEN AUSWIRKUNGEN, DA 6570 ; SCHON "ACCESS" AUF BEREICHS- 6580 ; UEBERSCHREITUNG PRUEFT. 6590 ; 6600 ; NACH AUSFUEHRUNG VON "LINE" 6610 ; IST (X0,Y0) GLEICH (X1,Y1). 6620 ; DIE KOORDINATEN MUESSEN DAHER 6630 ; BEI JEDEM AUFRUF NEU GESETZT 6640 ; WERDEN. 6650 ;-------------------------------- 6660 DX THEN1;INTERNAL 6670 DY THEN1;PARAMETER 6680 DIFFXL THEN1;MEMORY 6690 DIFFXH THEN1;AREA 6700 DIFFY THEN1 6710 DC THEN1 6720 DH THEN1 6730 DM THEN1 6740 DL THEN1 6750 QH THEN1 6760 QM THEN1 6770 QL THEN1 6780 DELTA_H THEN1 6790 DELTA_M THEN1 6800 DELTA_L THEN1 6810 LINE MID$#1 6820 (null)*+4 6830 CLINE MID$#0 6840 (null)2 6850 ACCESSLINE 6860 ;******************************** 6870 ;* * 6880 ;* 1. COMPUTE DX AND DY * 6890 ;* -------------------- * 6900 ;* * 6910 ;* DX AND DY ARE USED TO DETER- * 6920 ;* MINE IN WHICH DIRECTION THE * 6930 ;* LINE IS TO BE DRAWN. * 6940 ;* * 6950 ;* DX = -1 INDICATES * 6960 ;* X COORD. DECREMENTS * 6970 ;* * 6980 ;* DX = 1 INDICATES * 6990 ;* X COORD. INCREMENTS * 7000 ;* * 7010 ;* DX = 0 INDICATES THERE IS * 7020 ;* NO X COORD. CHANGE * 7030 ;* * 7040 ;* VALUES OF DY ARE ANALOGOUS. * 7050 ;* * 7060 ;******************************** 7070 PEEK#$FF;COMPUTE DX 7080 MID$X1H 7090 STR$X0H 7100 (null)TXL 7110 (null)DXP 7120 (null)DXN 7130 TXL MID$X1L;TEST X LOW 7140 STR$X0L 7150 (null)DXN 7160 (null)DXZ 7170 DXP (null);DX = 1 7180 DXZ (null);DX = 0 7190 DXN (null)DX;DX = -1 7200 ;================================ 7210 PEEK#$FF;COMPUTE DY 7220 MID$Y1 7230 STR$Y0 7240 (null)DYN 7250 (null)DYZ 7260 (null);DY = 1 7270 DYZ (null);DY = 0 7280 DYN (null)DY;DY = -1 7290 ;================================ 7300 (null)EQUAL;IF DY = 0 7310 MID$DX;OR DX = 0 7320 (null)EQUAL;GOTO EQUAL 7330 ;******************************** 7340 ;* * 7350 ;* 2. COMPUTE X AND Y * 7360 ;* COORDINATE DIFFERENCES * 7370 ;* -------------------------- * 7380 ;* * 7390 ;* THIS IS EFFECTED BY NORMAL * 7400 ;* SUBTRACTION AND SUBSEQUENT * 7410 ;* 2-COMPLEMENT FORMATION, IF * 7420 ;* RESULT IS NEGATIVE. * 7430 ;* * 7440 ;******************************** 7450 CDX MID$X1L;DIFF. X 7460 (null) 7470 (null)X0L 7480 (null)DIFFXL 7490 MID$X1H 7500 (null)X0H 7510 (null)DIFFXH 7520 MID$DX 7530 (null)CDY 7540 MID$DIFFXL;IF DX= -1 7550 LEFT$#$FF 7560 (null);COMPUTE 7570 VAL#1 7580 (null)DIFFXL;2-COMPL. 7590 MID$DIFFXH 7600 LEFT$#$FF 7610 VAL#0 7620 (null)DIFFXH 7630 ;================================ 7640 CDY MID$Y1;DIFF. Y 7650 (null) 7660 (null)Y0 7670 (null)DIFFY 7680 MID$DY 7690 (null)INCDIFF;IF DY = -1 7700 MID$DIFFY 7710 LEFT$#$FF 7720 (null) 7730 VAL#1;2-COMPL. 7740 (null)DIFFY 7750 ;================================ 7760 INCDIFF RIGHT$DIFFXL;INCREMENT 7770 (null)INCDIFFY;DIFFERENCE 7780 RIGHT$DIFFXH;BY 1 7790 INCDIFFY RIGHT$DIFFY 7800 ;================================ 7810 MID$DIFFXH 7820 (null)XWAY 7830 MID$DIFFXL 7840 STR$DIFFY 7850 (null)XWAY 7860 (null)YWAY 7870 ;================================ 7880 EQUAL MID$X0L;"STRAIGHT" 7890 PEEKX0H;LINES ARE 7900 LENY0;DRAWN HERE 7910 (null)ACCESS 7920 MID$Y0 7930 STR$Y1 7940 (null)CONTEQ 7950 MID$X0H 7960 STR$X1H 7970 (null)CONTEQ 7980 MID$X0L 7990 STR$X1L 8000 (null)CONTEQ 8010 (null) 8020 CONTEQ MID$Y0 8030 (null) 8040 VALDY 8050 (null)Y0 8060 MID$DX 8070 (null)EQUAL 8080 (null)DOWNXEQ 8090 (null) 8100 VALX0L 8110 (null)X0L 8120 MID$X0H 8130 VAL#0 8140 (null)X0H 8150 (null)EQUAL 8160 DOWNXEQ CHR$X0L 8170 MID$X0L 8180 STR$#$FF 8190 (null)EQUAL 8200 CHR$X0H 8210 (null)EQUAL 8220 ;******************************** 8230 ;* * 8240 ;* 3. DIVIDE DIFF. X BY DIFF. Y * 8250 ;* ---------------------------- * 8260 ;* * 8270 ;* THIS IS A 24/8 BIT DIVISION. * 8280 ;* * 8290 ;* DC/DH/DM/DL IS THE DIVIDEND, * 8300 ;* DIFFY IS THE DIVISOR, * 8310 ;* QH/QM/QL IS THE QUOTIENT. * 8320 ;* * 8330 ;******************************** 8340 XWAY PEEK#0 8350 (null)DL 8360 MID$DIFFXL 8370 (null)DM 8380 MID$DIFFXH 8390 (null)DH 8400 (null)DC 8410 PEEK#24 8420 DIVLOOP MID$DH 8430 (null) 8440 (null)DIFFY 8450 (null) 8460 MID$DC 8470 (null)#0 8480 (null)ROTLEFT 8490 (null)DH 8500 (null)DC 8510 (null) 8520 FN$24 8530 ROTLEFT (null) 8540 (null)QL;ROTATE C 8550 (null)QM;LEFT INTO 8560 (null)QH;QUOTIENT 8570 (null)DL 8580 (null)DM;ROTATE 8590 (null)DH;DIVIDEND 8600 (null)DC;LEFT 8610 (null) 8620 (null)DIVLOOP 8630 ;================================ 8640 MID$QH 8650 (null)DELTA_H 8660 MID$QM 8670 (null)DELTA_M 8680 MID$QL 8690 (null)DELTA_L 8700 ;================================ 8710 XLOOP MID$X0H 8720 STR$X1H 8730 (null)XCONT 8740 MID$X0L 8750 STR$X1L;IF X0=X1 8760 (null)XCONT;THEN EXIT 8770 (null) 8780 ;================================ 8790 XCONT MID$X0L 8800 PEEKX0H 8810 LENY0 8820 (null)ACCESS 8830 MID$DX 8840 (null)XDOWN 8850 RIGHT$X0L 8860 (null)SETY 8870 RIGHT$X0H 8880 (null)SETY 8890 XDOWN CHR$X0L 8900 MID$X0L 8910 STR$#$FF 8920 (null)SETY 8930 CHR$X0H 8940 ;================================ 8950 SETY CHR$DELTA_H 8960 (null)XLOOP 8970 MID$Y0 8980 (null) 8990 VALDY 9000 (null)Y0 9010 (null) 9020 MID$DELTA_L 9030 VALQL 9040 (null)DELTA_L 9050 MID$DELTA_M 9060 VALQM 9070 (null)DELTA_M 9080 MID$QH 9090 VAL#0 9100 (null)DELTA_H 9110 (null)XLOOP 9120 ;******************************** 9130 ;* * 9140 ;* 4. DIVIDE DIFF. Y BY DIFF. X * 9150 ;* ---------------------------- * 9160 ;* * 9170 ;* THIS IS A 24/8 BIT DIVISION. * 9180 ;* * 9190 ;* DC/DH/DM/DL IS THE DIVIDEND, * 9200 ;* DIFFXL IS THE DIVISOR, * 9210 ;* QH/QM/QL IS THE QUOTIENT. * 9220 ;* * 9230 ;******************************** 9240 YWAY PEEK#0 9250 (null)DL 9260 MID$DIFFY 9270 (null)DM 9280 (null)DH 9290 (null)DC 9300 PEEK#24 9310 DIVYLOOP MID$DH 9320 (null) 9330 (null)DIFFXL 9340 (null) 9350 MID$DC 9360 (null)#0 9370 (null)ROTLEFTY 9380 (null)DH 9390 (null)DC 9400 (null) 9410 FN$24 9420 ROTLEFTY (null) 9430 (null)QL;ROTATE C 9440 (null)QM;LEFT INTO 9450 (null)QH;QUOTIENT 9460 (null)DL 9470 (null)DM;ROTATE 9480 (null)DH;DIVIDEND 9490 (null)DC;LEFT 9500 (null) 9510 (null)DIVYLOOP 9520 ;================================ 9530 MID$QH 9540 (null)DELTA_H 9550 MID$QM 9560 (null)DELTA_M 9570 MID$QL 9580 (null)DELTA_L 9590 ;================================ 9600 YLOOP MID$Y0 9610 STR$Y1;IF Y0=Y1 9620 (null)YCONT;THEN EXIT 9630 (null) 9640 ;================================ 9650 YCONT MID$X0L 9660 PEEKX0H 9670 LENY0 9680 (null)ACCESS 9690 MID$Y0 9700 (null) 9710 VALDY 9720 (null)Y0 9730 SETX CHR$DELTA_H 9740 (null)YLOOP 9750 MID$DX 9760 (null)XDOWNY 9770 RIGHT$X0L 9780 (null)GETDELTA 9790 RIGHT$X0H 9800 (null)GETDELTA 9810 XDOWNY CHR$X0L 9820 MID$X0L 9830 STR$#$FF 9840 (null)GETDELTA 9850 CHR$X0H 9860 ;================================ 9870 GETDELTA (null) 9880 MID$DELTA_L 9890 VALQL 9900 (null)DELTA_L 9910 MID$DELTA_M 9920 VALQM 9930 (null)DELTA_M 9940 MID$QH 9950 VAL#0 9960 (null)DELTA_H 9970 (null)YLOOP 10000 ;-------------------------------- 10010 ; 10020 ; DRAW/CLEAR A FRAME 10030 ; ================== 10040 ; 10050 ; FRAME ZEICHNET EINEN RAHMEN. 10060 ; CFRAME LOESCHT DIESEN RAHMEN. 10070 ; 10080 ; (FX0,FY0) ENTHAELT DIE LINKE 10090 ; OBERE ECKE AND (FX1,FY1) 10100 ; DIE RECHTE UNTERE ECKE 10110 ; (ODER UMGEKEHRT). 10120 ; 10130 ;-------------------------------- 10140 TAB(PX0L=X0L 10150 TAB(PX0H=X0H 10160 TAB(PX1L=X1L 10170 TAB(PX1H=X1H 10180 TAB(PY0=Y0 10190 TAB(PY1=Y1 10200 GETLCCLOSEXCL,XCH,YC 10210 MID$XCL 10220 PEEKXCH 10230 LENYC 10240 NEW 10250 GETSCCLOSEXCL,XCH,YC 10260 (null)XCL 10270 (null)XCH 10280 (null)YC 10290 NEW 10300 GETXF0CLOSESXL,SXH,SY 10310 LCCLOSESXL,SXH,SY 10320 SCCLOSEPX0L,PX0H,PY0 10330 NEW 10340 GETXF1CLOSESXL,SXH,SY 10350 LCCLOSESXL,SXH,SY 10360 SCCLOSEPX1L,PX1H,PY1 10370 NEW 10380 FRAME MID$#1 10390 (null)*+4 10400 CFRAME MID$#0 10410 (null)2 10420 XF0CLOSEFX0L,FX0H,FY0 10430 XF1CLOSEFX1L,FX1H,FY0 10440 (null)ACCESSLINE 10450 XF0CLOSEFX1L,FX1H,FY1 10460 (null)ACCESSLINE 10470 XF0CLOSEFX0L,FX0H,FY0 10480 XF1CLOSEFX0L,FX0H,FY1 10490 (null)ACCESSLINE 10500 XF0CLOSEFX1L,FX1H,FY1 10510 (null)ACCESSLINE 10520 ;-------------------------------- 10530 ; 10540 ; FILL A FRAME 10550 ; ============ 10560 ; 10570 ; FILL FUELTT EINEN BEREICH DER 10580 ; GRAFIKSEITE, DER VON EINEM 10590 ; RAHMEN BESCHRAENKT IST. 10600 ; 10610 ; OHNE BEGRENZUNG WIRD JEWEILS 10620 ; BIS ZUM BILDSCHIRMRAND AUF- 10630 ; GEFUELLT. 10640 ; 10650 ; DER PUNKT, AN DEM DIE FUELL- 10660 ; OPERATIONEN BEGINNT, WIRD MIT 10670 ; A,X,Y REGISTERN WIE BEI "SET" 10680 ; FESTGELEGT. 10690 ; 10700 ; IST DIESER PUNKT BEREITS GE- 10710 ; SETZT, STOPPT FILL SOFORT. 10720 ; 10730 ; WARNUNG: IN DIESER VERSION 10740 ; WERDEN NUR RECHTECKIGE RAHMEN 10750 ; VOLLSTAENDIG AUSGEFUELLT. 10760 ; IN ANDEREN FAELLEN KOENNEN 10770 ; MEHRERE "FILLS" NOTWENDIG SEIN. 10780 ; 10790 ;-------------------------------- 10800 SXL THEN1 10810 SXH THEN1 10820 SY THEN1 10830 CXL THEN1 10840 CXH THEN1 10850 CY THEN1 10860 GETINWCLOSEWORD 10870 RIGHT$WORD 10880 (null)END 10890 RIGHT$WORD+1 10900 END 10910 NEW 10920 GETDCWCLOSEWORD 10930 CHR$WORD 10940 MID$WORD 10950 STR$#$FF 10960 (null)END 10970 CHR$WORD+1 10980 END 10990 NEW 11000 FILL SCCLOSESXL,SXH,SY 11010 (null)TEST 11020 (null)BEGIN 11030 (null) 11040 BEGIN LCCLOSESXL,SXH,SY 11050 LINEUP SCCLOSECXL,CXH,CY 11060 (null)TEST 11070 (null)SETUP 11080 (null)DOWN 11090 SETUP LCCLOSECXL,CXH,CY 11100 (null)SET 11110 MID$CXL 11120 (null)DECRX;HIT 11130 MID$CXH;LEFT 11140 (null)CONTR;BORDER ? 11150 DECRX DCWCLOSECXL 11160 LCCLOSECXL,CXH,CY 11170 (null)TEST 11180 (null)SETUP 11190 CONTR MID$SXL;START 11200 PEEKSXH;X-COORD. 11210 (null)CXL 11220 (null)CXH 11230 WALKR MID$CXH 11240 (null)INCRX 11250 MID$CXL;HIT 11260 STR$#$40;RIGHT 11270 (null)CONTUP;BORDER ? 11280 INCRX INWCLOSECXL 11290 LCCLOSECXL,CXH,CY 11300 (null)TEST 11310 (null)CONTUP 11320 LCCLOSECXL,CXH,CY 11330 (null)SET 11340 (null)WALKR 11350 CONTUP MID$SXL 11360 PEEKSXH 11370 (null)CXL 11380 (null)CXH 11390 LCCLOSECXL,CXH,CY 11400 (null) 11410 ATN#$FF 11420 (null)DOWN 11430 (null)LINEUP 11440 DOWN LCCLOSESXL,SXH,SY 11450 SCCLOSECXL,CXH,CY 11460 BOTTOM (null) 11470 ATN#200 11480 (null)CHECKDOWN 11490 (null) 11500 CHECKDOWN (null)CY 11510 (null)TEST 11520 (null)SETDOWN 11530 (null) 11540 SETDOWN LCCLOSECXL,CXH,CY 11550 (null)SET 11560 MID$CXL 11570 (null)DECRXD;HIT 11580 MID$CXH;LEFT 11590 (null)CONTRD;BORDER ? 11600 DECRXD DCWCLOSECXL 11610 LCCLOSECXL,CXH,CY 11620 (null)TEST 11630 (null)SETDOWN 11640 CONTRD MID$SXL;START 11650 PEEKSXH;X-COORD. 11660 (null)CXL 11670 (null)CXH 11680 WALKRD MID$CXH 11690 (null)INCRXD 11700 MID$CXL;HIT 11710 STR$#$40;RIGHT 11720 (null)CONTDOWN;BORDER ? 11730 INCRXD INWCLOSECXL 11740 LCCLOSECXL,CXH,CY 11750 (null)TEST 11760 (null)CONTDOWN 11770 LCCLOSECXL,CXH,CY 11780 (null)SET 11790 (null)WALKRD 11800 CONTDOWN MID$SXL 11810 PEEKSXH 11820 (null)CXL 11830 (null)CXH 11840 LENCY 11850 (null)BOTTOM 11860 ;-------------------------------- 11870 ; 11880 ; TEXT 11890 ; ==== 11900 ; 11910 ; ZEIGT ASCII TEXT AUF DER 11920 ; AKTUELLEN GRAFIKSEITE AN. 11930 ; 11940 ; DIE ADRESSE DES ANZUZEIGENDEN 11950 ; TEXTES WIRD IN DIE REGISTER 11960 ; (A/Y) (LOW/HIGH) GELADEN; 11970 ; DIE TEXTFARBE INS X REGISTER. 11980 ; IST X>128, WIRD KEINE NEUE 11990 ; FARBE GESETZT. 12000 ; DIE SPALTE/ZEILE, AN DER DER 12010 ; ERSTE BUCHSTABE ANGEZEIGT WIRD, 12020 ; WIRD BESTIMMMT DURCH 12030 ; 12040 ; TX (SPALTE) : 0 <= TX <= 39 12050 ; TY (ZEILE) : 0 <= TX <= 24 12060 ; 12070 ; BEI ANDEREN WERTEN STOPPT 12080 ; " TEXT " SOFORT. 12090 ; 12100 ; EXPX BESTIMMT DIE HORIZONTALE 12110 ; AUSDEHNUNG DER BUCHSTABEN. ES 12120 ; WERDEN NUR DIE BEIDEN LSB'S 12130 ; BETRACHTET. DIE WERTE 0,1,2,3 12140 ; BESTIMMEN DIE AUSDEHNUNG IN X- 12150 ; RICHTUNG. 12160 ; EXPY BESTIMMT DIE VERTIKALE 12170 ; AUSDEHNUNG DER BUCHSTABEN. 12180 ; DIE WERTE ENTSPRECHEN DENEN VON 12190 ; EXPX. 12200 ; CASE GIBT AN, WELCHER ZEICHEN- 12210 ; SATZ VERWENDET WIRD 12220 ; (NUR DAS LSB WIRD BETRACHTET): 12230 ; 12240 ; CASE=0 : UPPER CASE 12250 ; 12260 ; CASE=1 : LOWER CASE 12270 ; 12280 ; WIRD BEI DER ANZEIGE DES TEXTES 12290 ; DAS ZEILENENDE ERREICHT, HAELT 12300 ; DIE ROUTINE, UND DER REST DES 12310 ; TEXTES WIRD IGNORIERT. 12320 ; 12330 ; DAS ENDE DES TEXTES WIRD DURCH 12340 ; EIN NULL BYTE (HEX 00) HINTER 12350 ; DEM LETZTEN ZEICHEN MARKIERT. 12360 ; 12370 ;-------------------------------- 12380 MATBUF THEN8 12390 BXL THEN1 12400 BXH THEN1 12410 XXL THEN1 12420 XXH THEN1 12430 XY THEN1 12440 XXC THEN1 12450 XYC THEN1 12460 TEXTCOL THEN1 12470 ;================================ 12480 TEXT (null)READCHAR+1 12490 (null)READCHAR+2 12500 (null)TEXTCOL 12510 ;================================ 12520 TEXTLOOP MID$TX;ENOUGH 12530 STR$#40;ROOM LEFT? 12540 (null)TERMINATE 12550 MID$TY 12560 STR$#25 12570 (null)TERMINATE 12580 READCHAR MID$$FFFF;TEXT ADR. 12590 (null)CONTTEXT 12600 TERMINATE MID$#0;RESET 12610 (null)2;LOC. 2 ! 12620 (null) 12630 ;================================ 12640 CONTTEXT INWCLOSEREADCHAR+1 12650 LENTEXTCOL 12660 (null)COLORCHAR 12670 STR$#" " 12680 (null)CONVCHAR+1 12690 (null)NEXTCOL 12700 COLORCHAR (null) 12710 MID$#0 12720 (null)LOW 12730 (null)HIGH 12740 TCL LENTEXTCOL 12750 MID$TX 12760 (null) 12770 VALLOW;X OFFSET 12780 (null) 12790 MID$TY 12800 (null) 12810 VALHIGH;Y OFFSET 12820 (null)SETCOL 12830 MID$LOW 12840 STR$EXPX 12850 (null)TCC 12860 RIGHT$LOW 12870 (null)TCL 12880 TCC MID$HIGH 12890 STR$EXPY 12900 (null)CONVCHAR 12910 MID$#0 12920 (null)LOW 12930 RIGHT$HIGH 12940 (null)TCL 12950 ;================================ 12960 CONVCHAR (null) 12970 STR$#$40 12980 (null)TL 12990 STR$#$60;CONVERT 13000 (null)CV1;ASCII 13010 STR$#$80;TO 13020 (null)CV2;SCREEN 13030 STR$#$C0;CODE 13040 (null)CV1 13050 CV2 (null) 13060 (null)#$40 13070 CV1 (null) 13080 (null)#$40 13090 TL (null)CRP;INIT 13100 MID$#0;CHAR-ROM 13110 (null)CRP+1;POINTER 13120 PEEK#3 13130 MULT8 (null)CRP;MULTIPLY 13140 (null)CRP+1;"CRP" BY 8 13150 (null) 13160 (null)MULT8 13170 MID$CASE;ADD BASE 13180 ASC#1;ADDRESS 13190 (null) 13200 (null);CHARACTER 13210 (null);MATRIX IS 13220 VAL#$D0;ROM AREA 13230 VALCRP+1;AT $D000! 13240 (null)CRP+1 13250 ;******************************** 13260 ;* * 13270 ;* CRP NOW CONTAINS POINTER TO * 13280 ;* THE ACTUAL 8*8 - BIT MATRIX * 13290 ;* OF THE CHARACTER TO BE DIS- * 13300 ;* PLAYED. THESE 8 BYTES ARE * 13310 ;* NOW COPIED INTO " MATBUF ". * 13320 ;* * 13330 ;******************************** 13340 (null);IRQ OFF, 13350 MID$#$33;CHARACTER 13360 (null)1;ROM ON ! 13370 LEN#7 13380 MATCOPY MID$(CRP),Y 13390 (null)MATBUF,Y 13400 (null) 13410 (null)MATCOPY 13420 MID$#$37;CHARACTER 13430 (null)1;ROM OFF, 13440 (null);IRQ ON . 13450 ;******************************** 13460 ;* * 13470 ;* COLUMN AND LINE VALUES ARE * 13480 ;* TRANSFORMED INTO X/Y COOR- * 13490 ;* DINATES FOR ACCESSING DOTS * 13500 ;* * 13510 ;******************************** 13520 MID$TX 13530 (null) 13540 (null) 13550 (null) 13560 (null)BXL 13570 MID$#0 13580 VAL#0 13590 (null)BXH 13600 MID$TY 13610 (null) 13620 (null) 13630 (null) 13640 (null)XY 13650 ;******************************** 13660 ;* * 13670 ;* ONE LETTER IS PRINTED INTO * 13680 ;* THE BIT-MAP BY ISOLATING * 13690 ;* EACH DOT OF ITS MATRIX ; * 13700 ;* * 13710 ;* TESTING IF IT IS SET BY * 13720 ;* ANDING WITH THE POWERS OF 2 * 13730 ;* (IN TAB3); ISOLATING THE * 13740 ;* ZERO FLAG AFTER THIS OPERA- * 13750 ;* TION THAT INDICATES THE * 13760 ;* EQUALITY, INVERTING IT, * 13770 ;* * 13780 ;* AND FINALLY STORING IT AS * 13790 ;* THE CLEAR/SET PARAMETER OF * 13800 ;* THE " ACCESS " ROUTINE. * 13810 ;* * 13820 ;******************************** 13830 MID$EXPY 13840 ASC#3 13850 (null)XYC 13860 MID$#0 13870 (null)HIGH 13880 LINEBEGIN MID$#7 13890 (null)LOW 13900 MID$BXL 13910 (null)XXL 13920 MID$BXH 13930 (null)XXH 13940 SETLOOP LENHIGH 13950 PEEKLOW 13960 MID$MATBUF,Y 13970 ASCTAB3,X 13980 (null) 13990 (null);ISOLATE 14000 ASC#2;ZERO FLAG 14010 LEFT$#2;& INVERT 14020 (null)2;-> CLEAR 14030 MID$EXPX; OR SET 14040 ASC#3 14050 (null)XXC 14060 MULTIPLE LCCLOSEXXL,XXH,XY 14070 (null)ACCESS 14080 INWCLOSEXXL 14090 CHR$XXC;EXPAND X 14100 (null)MULTIPLE 14110 CHR$LOW 14120 (null)SETLOOP 14130 RIGHT$XY 14140 CHR$XYC;EXPAND Y 14150 (null)LINEBEGIN 14160 RIGHT$HIGH 14170 MID$EXPY 14180 ASC#3 14190 (null)XYC 14200 MID$HIGH 14210 STR$#PRINT# 14220 (null)LINEBEGIN 14230 NEXTCOL PEEKTX 14240 (null) 14250 (null) 38836 (null) 14270 VALEXPX 14280 (null)TX 14290 (null)TEXTLOOP 15000 ;-------------------------------- 15010 ; 15020 ; CIRCLE / CCIRCLE 15030 ; ================ 15040 ; 15050 ; ZEICHNET/LOESCHT EINEN KREIS. 15060 ; DER MITTELPUNKT DES KREISES 15070 ; STEHT IN DEN A,X,Y REGISTERN. 15080 ; 15090 ; DER RADIUS STEHT IN "RAD". 15100 ; 15110 ;-------------------------------- 15120 MXL THEN1 15130 MXH THEN1 15140 MY THEN1 15150 C1 THEN1 15160 C2 THEN1 15170 C3 THEN1 15180 C4 THEN1 15190 TAB(CDOT=ACCESS 15200 GETCS 15210 MID$LOW 15220 PEEKHIGH 15230 (null)CDOT 15240 NEW 15250 CIRCLE (null) 15260 MID$#1 15270 (null)*+5 15280 CCIRCLE (null) 15290 MID$#0 15300 (null)2 15310 (null) 15320 SCCLOSEMXL,MXH,MY 15330 RIGHT$RAD 15340 PEEKRAD 15350 TAN#2 15360 (null)READLT 15370 (null) 15380 READLT MID$LT1,X 15390 (null)C1 15400 MID$LT2,X 15410 (null)C2 15420 (null) 15430 (null)C4 15440 LENRAD 15450 (null)$B3A2 15460 (null)$BC0C 15470 LEN#$4B 15480 (null)$B3A2 15490 (null)$BA2B 15500 (null)$BAFE 15510 (null)$BAFE 15520 (null)$BC9B 15530 MID$#0 15540 (null)C3 15550 CLOOP PEEKC3 15560 (null) 15570 MID$C1 15580 (null)LT1,X 15590 (null)LOW 15600 MID$C2 15610 (null)LT2,X 15620 (null)HIGH 15630 PEEKC4 15640 MID$LT2,X 15650 STR$HIGH 15660 (null)CL1 15670 (null)CL3 15680 (null)CL2 15690 CL1 MID$LT1,X 15700 STR$LOW 15710 (null)CL3 15720 CL2 CHR$C4 15730 CL3 (null) 15740 MID$C4 15750 VALMY 15760 (null) 15770 (null) 15780 MID$MXL 15790 VALC3 15800 (null)LOW 15810 MID$MXH 15820 VAL#0 15830 (null)HIGH 15840 CS 15850 (null) 15860 MID$MY 15870 (null)C4 15880 (null) 15890 CS 15900 (null) 15910 MID$MY 15920 VALC4 15930 (null) 15940 (null) 15950 MID$MXL 15960 (null)C3 15970 (null)LOW 15980 MID$MXH 15990 (null)#0 16000 (null)HIGH 16010 CS 16020 (null) 16030 MID$MY 16040 (null)C4 16050 (null) 16060 CS 16070 (null) 16080 MID$MXL 16090 VALC4 16100 (null)LOW 16110 MID$MXH 16120 VAL#0 16130 (null)HIGH 16140 (null) 16150 MID$MY 16160 VALC3 16170 (null) 16180 CS 16190 (null) 16200 MID$MY 16210 (null)C3 16220 (null) 16230 CS 16240 (null) 16250 MID$MXL 16260 (null)C4 16270 (null)LOW 16280 MID$MXH 16290 (null)#0 16300 (null)HIGH 16310 (null) 16320 MID$MY 16330 VALC3 16340 (null) 16350 CS 16360 (null) 16370 MID$MY 16380 (null)C3 16390 (null) 16400 CS 16410 (null) 16420 MID$C3 16430 VAL#1 16440 (null)C3 16450 STR$$65 16460 (null)CTERM 16470 (null)CLOOP 16480 CTERM (null) 16490 ;-------------------------------- 16500 ; 16510 ; DRAW LINES / CLEAR LINES 16520 ; ======(null)=======(null)========= 16530 ; 16540 ; DIESE ROUTINEN ERHALTEN EINEN 16550 ; ZEIGER IN (A/Y) AUF EINE 16560 ; KOORDINATENTABELLE. 16570 ; 16580 ; DIE EINTRAEGE DIESER TABELLE 16590 ; WERDEN ALS DIE KOORDINATEN 16600 ; VON ENDPUNKTEN VON ZUSAMMEN- 16610 ; HAENGENDEN LINIEN INTERPRETIERT. 16620 ; VON EINEM PUNKT ZUM NAECHSTEN 16630 ; WIRD JEWEILS EINE LINIE 16640 ; GEZEICHNET / GELOESCHT. 16650 ; DAS ENDE DER TABELLE WIRD MAR- 16660 ; KIERT DURCH EINE X KOORDINATE 16670 ; >= $8000. 16680 ;-------------------------------- 16690 GETCTFCLOSEPAR 16700 ;COORDINATE TRANSFER 16710 MID$(LOW),Y 16720 (null)PAR 16730 (null) 16740 NEW 16750 LINES PEEK#1 16760 (null)*+4 16770 CLINES PEEK#0 16780 (null)2 16790 (null)LOW 16800 (null)HIGH 16810 LOOP LEN#4;SECOND DOT 16820 MID$(LOW),Y;TABLE END? 16830 (null)CONTLINES 16840 (null) 16850 CONTLINES LEN#0 16860 CTFCLOSEX0L 16870 CTFCLOSEX0H 16880 CTFCLOSEY0 16890 CTFCLOSEX1L 16900 CTFCLOSEX1H 16910 CTFCLOSEY1 16920 MID$LOW 16930 (null) 16940 VAL#3 16950 (null)LOW 16960 MID$HIGH 16970 VAL#0 16980 (null)HIGH 16990 (null)ACCESSLINE 17000 (null)LOOP 17010 ;-------------------------------- 17020 ; 17030 ; *** ENDE DES QUELLTEXTES *** 17040 ; 17050 ; AB HIER PLATZ FUER ZUSAETZLICHE 17060 ; GRAFIK-ROUTINEN! 17070 ; 17080 ;--------------------------------